﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using ERP_RORZE_PERMISSION.Base;
using ERP_RORZE_PRODUCT.Product.DAO;
using ERP_RORZE_DLL.Product.DAO;
using ERP_RORZE_DLL.Product.database;
using System.Text.RegularExpressions;
using BaseDAO = ERP_RORZE_TOOL.DBAccess.BaseDAO;

namespace ERP_RORZE_PRODUCT.Product.Incauhinhmoi
{
    public partial class frm_ConfigureDataAdd : DevExpress.XtraEditors.XtraForm
    {
        public event EventHandler Reload;
        ConfigureData b = new ConfigureData();
        ClsIncauhinhDAO clsConfigureDAO = new ClsIncauhinhDAO();
        ClsWTSDAO clsWTSDAO = new ClsWTSDAO();
        ClsPartDataDAO clsMaterial = new ClsPartDataDAO();
        ClsMODAO clsMODAO = new ClsMODAO();
        ClsPartDataTable obj = new ClsPartDataTable();
        ClsPartDataDAO clspartDAO = new ClsPartDataDAO();
        private DataTable dtCheck;
        private LogUtils log;

        public frm_ConfigureDataAdd()
        {
            InitializeComponent();
            log = new LogUtils();
        }

        private void btnExit_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void frm_ConfigureDataAdd_Load(object sender, EventArgs e)
        {
            //ConfigureList

            DataTable dtConfigureList = new DataTable();
            dtConfigureList = clsConfigureDAO.GetAllConfigure();
            cbConfigureID.DataSource = dtConfigureList;
            cbConfigureID.DisplayMember = "ConfigureID";

            //KinhDoanhList

            DataTable dtKinhDoanhList = new DataTable();
            dtKinhDoanhList = clsConfigureDAO.GetAllPCPKD();
            cbKDID.DataSource = dtKinhDoanhList;
            cbKDID.DisplayMember = "KDID";

            //ReasonList

            DataTable dtReasonList = new DataTable();
            dtReasonList = clsConfigureDAO.GetAllRession();
            cbRessionID.DataSource = dtReasonList;
            cbRessionID.DisplayMember = "ReasonID";

            //RequireList

            DataTable dtRequireList = new DataTable();
            dtRequireList = clsConfigureDAO.GetAllRequire();
            cbRequireID.DataSource = dtRequireList;
            cbRequireID.DisplayMember = "RequireID";
            cbRequireID.ValueMember = "RequireID";

            //ShapeList

            DataTable dtShapeList = new DataTable();
            dtShapeList = clsConfigureDAO.GetAllShape();
            cbShapeID.DataSource = dtShapeList;
            cbShapeID.DisplayMember = "ShapeID";

            //StaffID

            DataTable dtStaff = new DataTable();
            dtStaff = clsWTSDAO.GetAllStaff();
            cbStaffRegister.DataSource = dtStaff;
            cbStaffRegister.DisplayMember = "StaffID";

            //MaterialID

            DataTable dtMaterial = new DataTable();
            dtMaterial = clsMaterial.GetAllMaterial();
            cbMaterialID.DataSource = dtMaterial;
            cbMaterialID.DisplayMember = "MaterialID";

            //PartID

            DataTable dtPartID = new DataTable();
            dtPartID = clsMODAO.GetAllPartID();
            cbPartNo.DataSource = dtPartID;
            cbPartNo.DisplayMember = "PartNo";
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            if (GetData())
            {

                //int i = txtWidth.Text.IndexOf("x");
                //string kt2 = "0" + txtWidth.Text;
                //if (i != -1 && cbShapeID.Text != "Pipe" && cbShapeID.Text != "Coner")
                //{
                //    MessageBox.Show("Cấu hình 4 kích thước chỉ dùng cho cấu hình có hình dạng Pipe và Coner");
                //}
                //else if (i != -1 && cbShapeID.Text != "Coner")
                //{
                //    MessageBox.Show("Cấu hình 4 kích thước chỉ dùng cho cấu hình có hình dạng Pipe và Coner");
                //}
                //else if (i == -1 && IsNumber(txtWidth.Text) == false)
                //{
                //    MessageBox.Show("Nếu cấu hình 3 kích thước thì Width phải là kiểu số. Nếu cấu hình 4 kích thước thì nhập x vào Width");
                //}
                //else if (txtWidth.Text.Substring(0, 1) == "x")
                //{
                //    MessageBox.Show("Kích thước phải đầy đủ. Trước dấu x phải là số");
                //}

                //else if (txtWidth.Text.Substring(txtWidth.Text.Length - 1, 1) == "x")
                //{
                //    MessageBox.Show("Kích thước phải đầy đủ. Sau dấu x phải là số");
                //}

                //else if (txtWidth.Text.Substring(txtLenght.Text.Length - 1, 1) == "x")
                //{
                //    MessageBox.Show("Kích thước phải đầy đủ. Sau dấu x phải là số");
                //}
                if (txtWidth.Text.ToUpper() == "X" && cbShapeID.Text != "Pipe" && cbShapeID.Text != "Coner" && cbShapeID.Text.ToUpper() != "SP")
                {
                    MessageBox.Show("Cấu hình 4 kích thước thì nhập x vào ô Width, chiều dài vào ô Length, trọng lượng vào ô Thickness");
                }
                else if (txtWidth.Text.ToUpper() != "X" && ( cbShapeID.Text == "Coner" || cbShapeID.Text.ToUpper() == "SP"))
                {

                    MessageBox.Show("Loại Coner và SP là cấu hình 4 kích thước, phần Width phải nhập dấu X");
                }
                else
                {
                    string KichThuoc = "";
                    #region tính kích thước cấu hình
                    if (cbShapeID.Text.ToLower() == "hexagol")
                    {
                        KichThuoc = "H" + txtLenght.Text + "X" + txtThickness.Text;
                    }
                    else if (cbShapeID.Text.ToLower() == "round")
                    {
                        KichThuoc = "B" + txtLenght.Text + "X" + txtThickness.Text;
                    }
                    else if (cbShapeID.Text.ToLower() == "pipe" || cbShapeID.Text.ToLower() == "coner" || cbShapeID.Text.ToUpper() == "SP")
                    {
                        string str = txtWidth.Text.ToUpper();
                        if (str.IndexOf("X") != -1)
                        {
                            KichThuoc = "B" + txtThickness.Text + "X" + txtWidth.Text + "X" + txtLenght.Text;
                        }
                        else
                        {
                            KichThuoc = "B" + txtLenght.Text + "X";
                        }
                    }
                    else if (cbShapeID.Text.ToLower() == "frame")
                    {
                        KichThuoc = "B" + txtThickness.Text + "X" + txtLenght.Text + "X" + txtWidth.Text;
                    }
                    else if (cbShapeID.Text == "Buy")
                    {
                        KichThuoc = "";
                    }
                    else
                    {
                        KichThuoc = "B" + txtThickness.Text + "X" + txtWidth.Text + "X" + txtLenght.Text;
                    }

                    if (int.Parse(txtNumber.Text) > 0)
                    {
                        KichThuoc += "/" + txtNumber.Text + "pcs";
                    }
                    #endregion

                    #region lấy MaterialType

                    #endregion
                    if (txtWidth.Text.ToUpper() == "X")
                    {
                        //    string a = txtWidth.Text.Substring(0, i);
                        //    string c = txtWidth.Text.Substring(i + 1, txtWidth.Text.Length - i - 1);
                        //    if (IsNumber(a) == false)
                        //    {
                        //        MessageBox.Show("Cấu hình 4 kích thước thì lenght phải nhập theo mẫu (số x số)");
                        //    }
                        //    else if (IsNumber(c) == false)
                        //    {
                        //        MessageBox.Show("Cấu hình 4 kích thước thì lenght phải nhập theo mẫu (số x số)");
                        //    }
                        //    else
                        //    {
                        if (cbShapeID.Text.ToLower() == "pipe" || cbShapeID.Text.ToLower() == "coner" || cbShapeID.Text.ToUpper() == "SP")
                        {
                            #region Nhập dữ liệu cấu hình 4 kích thước sau khi kiểm tra
                            #region Nhập dữ liệu vào bảng ConfigureData
                            b.Page = int.Parse(txtPage.Text);
                            b.Bafu = checkBafu.Checked;
                            b.Blast30 = checkBlast30.Checked;
                            b.BAnod = checkBAnod.Checked;
                            b.Blast60 = checkBlast60.Checked;
                            b.Casiras = checkCasiras.Checked;
                            b.ConfigureID = cbConfigureID.Text;
                            b.Date = dateDate.DateTime;
                            b.HairLine = checkHairLine.Checked;
                            b.Helisart = checkHelisart.Checked;
                            b.InLuoi = checkInLuoi.Checked;
                            b.KDID = cbKDID.Text;
                            b.Length = float.Parse(txtLenght.Text);
                            b.MaBong = checkMaBong.Checked;
                            b.MaterialID = cbMaterialID.Text;
                            b.Migaky = checkMigaky.Checked;
                            b.Note = txtNote.Text;
                            b.Number = int.Parse(txtNumber.Text);
                            b.Outsite = checkOutsite.Checked;
                            b.Pack = checkPack.Checked;
                            b.PalCoat = checkPalCoat.Checked;
                            b.PartNo = cbPartNo.Text;
                            b.RequireID = cbRequireID.Text;
                            b.RessionID = cbRessionID.Text;
                            b.Seal = checkSeal.Checked;
                            b.SerialClose = checkSerialClose.Checked;
                            b.ShapeID = cbShapeID.Text;
                            b.StaffID = cbStaffRegister.Text;
                            b.SWash = checkSWash.Checked;
                            b.Thickness = float.Parse(txtThickness.Text);
                            b.WAnod = checkWAnod.Checked;
                            b.Width = txtWidth.Text;
                            b.Heru = checkHeru.Checked;
                            b.Niken = checkNiken.Checked;
                            b.MaiBongDP = checkMBDP.Checked;
                            b.RM = checkRM.Checked;
                            clsConfigureDAO.InsertConfigureData(b);

                            //write Log
                            log.Table = LogConstant.Table.Product.ConfigureData;
                            log.Task = LogConstant.Task.Insert;
                            log.Description = "PartNo: " + b.PartNo;
                            log.WriteLog();

                            #endregion


                            #region Nhập dữ liệu vào bảng PartData

                            int indexWidth = txtWidth.Text.ToUpper().IndexOf("X");

                            obj.InputDate = dateDate.DateTime;
                            obj.PartID = cbPartNo.Text;
                            obj.MaterialID = cbMaterialID.Text;
                            obj.MaterialType = cbKDID.Text;
                            obj.Memo = cbRessionID.Text;
                            obj.Note = txtNote.Text;
                            //obj.Otherpro = txtOtherpro.Text;
                            obj.Price = 0;
                            obj.Shape = cbShapeID.Text;
                            if (indexWidth != -1)
                            {
                                obj.Thickness = 0;
                                obj.Width = "0";
                                obj.Lenght = 0;
                            }
                            else
                            {
                                obj.Lenght = float.Parse(txtLenght.Text);
                                obj.Thickness = float.Parse(txtThickness.Text);
                                obj.Width = txtWidth.Text;
                            }

                            obj.Workpiecesize = KichThuoc;
                            obj.Bafu = checkBafu.Checked;
                            obj.BAnod = checkBAnod.Checked;
                            obj.Blast30 = checkBlast30.Checked;
                            obj.Blast60 = checkBlast60.Checked;
                            obj.Caciras = checkCasiras.Checked;
                            obj.Cleanwave = checkSWash.Checked;
                            if (string.Compare(cbRequireID.Text, "Có") == 0)
                            {
                                obj.Cut = true;
                            }
                            else
                            {
                                obj.Cut = false;
                            }
                            obj.HairLine = checkHairLine.Checked;
                            //obj.HandFinish = checkHandFinish.Checked;
                            obj.Helisert = checkHelisart.Checked;
                            //obj.Inside = checkInside.Checked;
                            obj.Migaki = checkMigaky.Checked;
                            obj.PalCoat = checkPalCoat.Checked;
                            obj.RawMachine = checkOutsite.Checked;
                            obj.Seal = checkSeal.Checked;
                            obj.SerialNo = checkSerialClose.Checked;
                            obj.VacPac = checkPack.Checked;
                            obj.WAnod = checkWAnod.Checked;
                            obj.Heru = checkHeru.Checked;
                            obj.Niken = checkNiken.Checked;
                            obj.MaiBongDP = checkMBDP.Checked;
                            obj.InLuoi = checkInLuoi.Checked;
                            obj.MaBong = checkMaBong.Checked;
                            DataTable dtIDMAX = new DataTable();
                            dtIDMAX = clspartDAO.GetIDMax();
                            int ConfigID = 0;
                            foreach (DataRow r in dtIDMAX.Rows)
                            {
                                ConfigID = ConfigID + int.Parse(r["ID"].ToString());
                            }
                            obj.CofigID = ConfigID;
                            int kq;
                            //dtCheck = BaseDAO.ExecuteQuery("select * from [242_BusOder] where PartID = '" + cbPartNo.Text.Trim() + "'");
                            //if (dtCheck.Rows.Count == 0)
                            //{
                            //kq = clspartDAO.InsertPartData_Config(obj);
                            dtCheck = BaseDAO.ExecuteQuery("Select * from [242_PartData] where [PartID]='" + cbPartNo.Text.Trim() + "'");
                            if (dtCheck.Rows.Count > 0)
                            {
                                kq = clspartDAO.UpdatePartData_Config(obj);

                                //write Log
                                log.Table = LogConstant.Table.Product.PartMaterial;
                                log.Task = LogConstant.Task.Update;
                                log.Description = "PartNo: " + obj.PartID;
                                log.WriteLog();

                            }
                            else
                            {
                                kq = clspartDAO.InsertPartData_Config(obj);

                                //write Log
                                log.Table = LogConstant.Table.Product.PartMaterial;
                                log.Task = LogConstant.Task.Insert;
                                log.Description = "PartNo: " + obj.PartID;
                                log.WriteLog();


                            }
                            if (kq > 0)
                                MessageBox.Show("Đã nhập xong");
                            else
                                MessageBox.Show("Chưa nhập được");
                            //}
                            //else
                            //{
                            //    MessageBox.Show(@"Chi tiết này đã có dữ liệu, không thể chỉnh sửa với chi tiết này.");
                            //}

                            #endregion
                            #endregion
                        }
                    }
                    else
                    {
                        #region nhập dữ liệu 3 cấu hình sau khi kiểm tra
                        b.Page = int.Parse(txtPage.Text);
                        b.Bafu = checkBafu.Checked;
                        b.Blast30 = checkBlast30.Checked;
                        b.BAnod = checkBAnod.Checked;
                        b.Blast60 = checkBlast60.Checked;
                        b.Casiras = checkCasiras.Checked;
                        b.ConfigureID = cbConfigureID.Text;
                        b.Date = dateDate.DateTime;
                        b.HairLine = checkHairLine.Checked;
                        b.Helisart = checkHelisart.Checked;
                        b.InLuoi = checkInLuoi.Checked;
                        b.KDID = cbKDID.Text;
                        b.Length = float.Parse(txtLenght.Text);
                        b.MaBong = checkMaBong.Checked;
                        b.MaterialID = cbMaterialID.Text;
                        b.Migaky = checkMigaky.Checked;
                        b.Note = txtNote.Text;
                        b.Number = int.Parse(txtNumber.Text);
                        b.Outsite = checkOutsite.Checked;
                        b.Pack = checkPack.Checked;
                        b.PalCoat = checkPalCoat.Checked;
                        b.PartNo = cbPartNo.Text;
                        b.RequireID = cbRequireID.Text;
                        b.RessionID = cbRessionID.Text;
                        b.Seal = checkSeal.Checked;
                        b.SerialClose = checkSerialClose.Checked;
                        b.ShapeID = cbShapeID.Text;
                        b.StaffID = cbStaffRegister.Text;
                        b.SWash = checkSWash.Checked;
                        b.Thickness = float.Parse(txtThickness.Text);
                        b.WAnod = checkWAnod.Checked;
                        b.Width = txtWidth.Text;
                        b.Heru = checkHeru.Checked;
                        b.Niken = checkNiken.Checked;
                        b.MaiBongDP = checkMBDP.Checked;
                        b.RM = checkRM.Checked;
                        clsConfigureDAO.InsertConfigureData(b);

                        //write Log
                        log.Table = LogConstant.Table.Product.ConfigureData;
                        log.Task = LogConstant.Task.Insert;
                        log.Description = "PartNo: " + b.PartNo;
                        log.WriteLog();

                        //MessageBox.Show("Đã nhập xong");
                        #endregion

                        //////////
                        /// Nhập dữ liệu vào bảng PartData
                        ///////// 
                        #region Nhập dữ liệu vào bảng PartData
                        int indexWidth = txtWidth.Text.ToUpper().IndexOf("X");

                        obj.InputDate = dateDate.DateTime;
                        obj.PartID = cbPartNo.Text;
                        obj.MaterialID = cbMaterialID.Text;
                        obj.MaterialType = cbKDID.Text;
                        obj.Memo = cbRessionID.Text;
                        obj.Note = txtNote.Text;
                        //obj.Otherpro = txtOtherpro.Text;
                        obj.Price = 0;
                        obj.Shape = cbShapeID.Text;
                        if (indexWidth != -1)
                        {
                            obj.Thickness = 0;
                            obj.Width = "0";
                            obj.Lenght = 0;
                        }
                        else
                        {
                            obj.Lenght = float.Parse(txtLenght.Text);
                            obj.Thickness = float.Parse(txtThickness.Text);
                            obj.Width = txtWidth.Text;
                        }
                        obj.Workpiecesize = KichThuoc;
                        obj.Bafu = checkBafu.Checked;
                        obj.BAnod = checkBAnod.Checked;
                        obj.Blast30 = checkBlast30.Checked;
                        obj.Blast60 = checkBlast60.Checked;
                        obj.Caciras = checkCasiras.Checked;
                        obj.Cleanwave = checkSWash.Checked;
                        if (string.Compare(cbRequireID.Text, "Có") == 0)
                        {
                            obj.Cut = true;
                        }
                        else
                        {
                            obj.Cut = false;
                        }
                        obj.HairLine = checkHairLine.Checked;
                        //obj.HandFinish = checkHandFinish.Checked;
                        obj.Helisert = checkHelisart.Checked;
                        //obj.Inside = checkInside.Checked;
                        obj.Migaki = checkMigaky.Checked;
                        obj.PalCoat = checkPalCoat.Checked;
                        obj.RawMachine = checkOutsite.Checked;
                        obj.Seal = checkSeal.Checked;
                        obj.SerialNo = checkSerialClose.Checked;
                        obj.VacPac = checkPack.Checked;
                        obj.WAnod = checkWAnod.Checked;
                        obj.Heru = checkHeru.Checked;
                        obj.Niken = checkNiken.Checked;
                        obj.MaiBongDP = checkMBDP.Checked;
                        obj.InLuoi = checkInLuoi.Checked;
                        obj.MaBong = checkMaBong.Checked;
                        DataTable dtIDMAX = new DataTable();
                        dtIDMAX = clspartDAO.GetIDMax();
                        int ConfigID = 0;
                        foreach (DataRow r in dtIDMAX.Rows)
                        {
                            ConfigID = ConfigID + int.Parse(r["ID"].ToString());
                        }
                        obj.CofigID = ConfigID;
                        int kq;

                        DataTable dtCheck =
                            BaseDAO.ExecuteQuery("Select * from [242_PartData] where [PartID]='" + cbPartNo.Text.Trim() + "'");
                        if (dtCheck.Rows.Count > 0)
                        {
                            kq = clspartDAO.UpdatePartData_Config(obj);

                            //write Log
                            log.Table = LogConstant.Table.Product.PartMaterial;
                            log.Task = LogConstant.Task.Update;
                            log.Description = "PartNo: " + obj.PartID;
                            log.WriteLog();

                        }
                        else
                        {
                            kq = clspartDAO.InsertPartData_Config(obj);

                            //write Log
                            log.Table = LogConstant.Table.Product.PartMaterial;
                            log.Task = LogConstant.Task.Insert;
                            log.Description = "PartNo: " + obj.PartID;
                            log.WriteLog();


                        }

                        if (kq > 0)
                            MessageBox.Show("Đã nhập xong");
                        else
                            MessageBox.Show("Chưa nhập được");
                        #endregion

                    }
                }
            }

        }

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {

        }

        public bool IsNumber(string pText)
        {
            Regex regex = new Regex(@"^[-+]?[0-9]*\.?[0-9]+$");
            return regex.IsMatch(pText);
        }

        protected override bool ProcessKeyPreview(ref Message m)
        {
            if (m.Msg == 0x0100 && (int)m.WParam == 13)
            {
                this.ProcessTabKey(true);
            }
            return base.ProcessKeyPreview(ref m);
        }

        private bool GetData()
        {
            if (string.IsNullOrEmpty(cbPartNo.Text))
            {
                MessageBox.Show(@"Bạn phải nhập PartNo. Xin kiểm tra lại.");
                return false;
            }

            dtCheck = BaseDAO.ExecuteQuery("select * from [242_Part] where PartNo = '" + cbPartNo.Text.Trim() + "'");
            if (dtCheck.Rows.Count == 0)
            {
                MessageBox.Show(@"PartNo không hợp lệ. Xin kiểm tra lại.");
                return false;
            }


            //if (cbShapeID.Text.ToUpper().Equals("PLATE") || cbShapeID.Text.ToUpper().Equals("ROUND"))// || cbShapeID.Text.ToUpper().Equals("PIPE"))
            //{
            //    float result;
            //    if (!float.TryParse(txtWidth.Text, out result))
            //    {
            //        MessageBox.Show(@"ShapeID là Plate, Round thì Width phải là số.");
            //        return false;
            //    }
            //}
            return true;
        }

    }
}